package com.ruoyi.framework.login.api;

import cn.hutool.core.util.StrUtil;
import com.ruoyi.common.utils.StringUtils;

/**
 * ApiSessionUtils
 *
 * @author zheng
 * @since 2023/10/25 20:30
 */
public class ApiSessionUtils {

    /**
     * 创建缓存前缀用于批量删除
     *
     * @param clazz              类型便阿门
     * @param distinguishedContents 区别信息内容
     * @return 缓存键前缀
     */
    public static String createCacheKeyPrefix(Class<?> clazz, String... distinguishedContents) {
        return ApiSessionConst.SESSION_BEGIN +
                StrUtil.COLON +
                clazz.getSimpleName() +
                StrUtil.COLON +
                StringUtils.joinLocal(distinguishedContents, StrUtil.COLON) +
                StrUtil.COLON;
    }

    /**
     * 获取缓存的key信息
     *
     * @param clazz   数据类型
     * @param sessionKey 会话中带的key信息
     * @return 缓存的key信息
     */
    public static String createCacheKey(Class<?> clazz, String sessionKey) {
        return ApiSessionConst.SESSION_BEGIN +
                StrUtil.COLON +
                clazz.getSimpleName() +
                StrUtil.COLON +
                sessionKey;
    }


    /**
     * 管理员缓存key
     * @param sessionKey
     * @return
     */
    public static String createAdminCacheKey(String sessionKey) {
        return ApiSessionConst.SESSION_ADMIN_BEGIN +
                StrUtil.COLON +
                sessionKey;
    }


    /**
     * 创建sessionKey
     *
     * @param distinguishedContents 区分内容信息
     * @return SessionKey
     */
    public static String createSessionKey(String... distinguishedContents) {
        return StringUtils.joinLocal(distinguishedContents, StrUtil.COLON);
    }

}
